//面向过程面向函数

//函数式编程

//命令式编程，原生js开发或jeuery通过操作dom对象来完成数据的更改

//声明式编程，框架底层已经封装好模块帮我们完成dom的操作，只需声明即可 vue react angular
//编程范式，命令编程与声明式编程

//编程范式，面向对象的编程与面向过程的编程

//1.从num数组中提取小于100的数
let newNums=[]

for(const n of nums){
    if(n<100){
        newNums.push(n)
    }
}
console.log(newNums);

//2.从（1）中要求小于100的数×2
let newnewNums=[]
for(const n of nums){
    if(n<100){
        newNums.push(n*2)
    }
}
console.log(newNEWNums);
//3.从2累加
let total =0
for(const n of newNEWNums){
    total+=n
   
    }
console.log(total)


let newNums1=nums.filter(function(n){


    returnn<100
})
console.log(newNums1)

//2)map函数的使用
//他可以对数组中每个内容操作
//参数作为匿名函数
let newnewNums1=newNums1.map(function(n){
    return n*2
})

console.log(newnewNums1)

//3)reduce函数
//对所有数组内容进行汇总

let total1 =newnewNums1.reduce(function(preValue,n){
    return preValue+n
},0)
console.log(total1)

let totalnums=nums.filter(function(n){
    return n<100
})
.map(function(n){return n*2})
.reduce(function(preValue,n){
    return preValue+n
},0)


let totalnums2 =nums.filter(n=> n<100).map(n=>{
    return n*2
}).reduce((preValue,n)=>{
    return preValue+n
},0)